package 泛型;

/*
     泛型方法
          方法也可以被泛型化,不管此时定义在其中的类是不是泛型类,在泛型方法中可以定义泛型参数,此时,参数的类型就是传入数据的类型
          泛型方法的格式：
            [访问权限] <泛型> 返回类型 方法名([泛型标识 参数名称]) 抛出的异常
          泛型方法声明泛型时也可以指定上限
          在方法中出现了泛型的结构,泛型参数与类的泛型参数没有任何关系,即泛型方法所属的类是不是泛型类都没有关系
          泛型方法可以声明为静态的,因为泛型参数是在调用方法时确定的,而不是在实例化对象时确定的
 */
import java.util.ArrayList;
import java.util.List;

public class Test03 {
    //在方法中出现了泛型的结构,泛型参数与类的泛型参数没有任何关系,即泛型方法所属的类是不是泛型类都没有关系
    public <E> List<E> copyFromArrayToList(E[] arr){
        ArrayList<E> list = new ArrayList<>();

        for(E e : arr){
            list.add(e);
        }

        return list;
    }

    public static void main(String[] args) {
        Test03 t3 = new Test03();
        Integer[] arr = new Integer[]{1,2,3,4,5};
        //泛型方法在调用时,指明泛型参数的类型
        List<Integer> list = t3.copyFromArrayToList(arr);

        System.out.println(list);
    }
}
